import os
from pdf2image import convert_from_path

def convert_pdf_to_images(pdf_path, output_folder):
    """
    将指定的PDF文件转换为多张图片。

    参数:
    pdf_path (str): 输入的PDF文件的完整路径。
    output_folder (str): 保存输出图片的文件夹路径。
    """
    # 检查输出文件夹是否存在，如果不存在则创建
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
        print(f"创建输出文件夹: {output_folder}")

    try:
        # 从PDF路径转换页面，返回一个Image对象的列表
        # poppler_path 参数仅在Windows上且未将poppler添加到环境变量时需要
        # 例如: images = convert_from_path(pdf_path, poppler_path=r"C:\poppler\poppler-23.08.0\bin")
        images = convert_from_path(pdf_path)

        # 获取PDF文件名（不含扩展名），用于命名图片
        base_filename = os.path.splitext(os.path.basename(pdf_path))[0]

        # 遍历所有图片并保存
        for i, image in enumerate(images):
            # 定义输出图片的文件名
            image_filename = f"{base_filename}_page_{i + 1}.png"
            output_path = os.path.join(output_folder, image_filename)
            
            # 以PNG格式保存图片 (也可以选择 'JPEG')
            image.save(output_path, 'PNG')
            print(f"已保存: {output_path}")

        print("\n所有页面转换完成！")

    except Exception as e:
        print(f"发生错误: {e}")
        print("请确保您已正确安装Poppler并将其添加到了系统路径中。")


# --- 使用示例 ---
if __name__ == "__main__":
    # 1. 设置你的PDF文件路径
    # 在Windows上路径可能像这样: r"C:\Users\YourUser\Documents\example.pdf"
    pdf_file_dir = "D:\\00_python_auto\\09_pdf2img\\ori_pdf"  # <--- 修改这里

    # 2. 设置保存图片的文件夹名称
    output_dir = "D:\\00_python_auto\\09_pdf2img\\output"  # <--- 修改这里

    # 检查PDF文件是否存在
    for cd_i in os.listdir(pdf_file_dir):
        
        if os.path.exists(os.path.join(pdf_file_dir,cd_i)):
            convert_pdf_to_images(os.path.join(pdf_file_dir,cd_i), os.path.join(output_dir,cd_i).replace('.pdf',''))
        else:
            print(f"错误：找不到PDF文件 '{pdf_file_dir}'")
            print("请确保文件名和路径正确，并将该PDF文件与脚本放在同一目录下，或提供完整路径。")